package com.itheima.edu.info.manager.dao;

import com.itheima.edu.info.manager.domain.Student;

/*
    库管类
        1.核心职责是管理我们的数据仓库--数组:增删改查
        2.这里的所有方法【功能】都是给业务员用
 */
public class StudentDao {
    //1.创建一个长度为5的学生数组,用来充当数据库仓库
    private static Student[] stus = new Student[5];

    public boolean addStudent(Student stu) {
        //2.先定义一个标记:int index = -1,表示当前数组中没有索引位置可以用来存放要添加的学生对象
        int index = -1;
        //3.遍历数组
        for (int i = 0; i < stus.length; i++) {
            //获取当前索引的位置的元素
            Student student = stus[i];
            if (student == null) {
                //能进来说明有位置空缺,可以用来存放要添加的学生对象,这时我们就使用index记录下当前的索引
                index = i;
                //结束循环
                break;
            }
        }
        //4.出了循环,根据index的值就能确定本次要添加的学生对象能不能往数组里存
        if (index == -1) {
            //装满了,返回false,添加失败
            return false;
        } else {
            //没有装满,添加成功,返回true
            //将要添加的学生对象赋值到数组的index索引位置
            stus[index] = stu;
            return true;
        }
    }
    //查询全部学生
    public Student[] findAllStudent() {
        return stus;
    }

    public void deleteStudentBySid(String delSid) {
        //查找id在容器中所在的索引位置
        int index = getIndex(delSid);
        //将该索引位置,使用null进行覆盖
        stus[index] = null;
    }

    //查找学号对应的学生在学生数组中的索引位置
    public int getIndex(String delSid) {
        //定义一个标记:index = -1,默认要查找的id在数组中不存在
        int index = -1;
        for (int i = 0; i < stus.length; i++) {
            Student student = stus[i];
            if (student != null && student.getId().equals(delSid)) {
                index = i;
                break;
            }
        }
        return index;
    }
    //修改学生
    public void updateStudentBySid(String upSid, Student newStu) {
        //查找upTid在数组中的索引位置
        int index = getIndex(upSid);
        //使用newTeacher去替换该索引位置的原有信息,从而实现修改
        stus[index] = newStu;
    }
}
